import core from '@/core/'
/**
 * 所有请求（系统启动例外）都要添加的必要信息
 * 只取config中的
 * header： 完全自定义的请求头，不做任何额外处理
 * necessary： 按照系统约定的请求头，统一转化为Cu-的格式
 * isTest： 是否测试环境，true表示一定是测试环境；false表示一定是正式环境，到这里已经处理完毕了
 */
module.exports = (config = {}) => {
	const {header, necessary, isTest = true, showConsole} = config
	const obj = {...header}
	if (necessary) {
		// 请求头的其它必要参数。如果存在都将修改为Cu-开头
		Object.keys(necessary).forEach(key => {
			if (key.length > 3 && key.substr(0, 3) === 'Cu-') {
				// 不用处理
				obj[key] = necessary[key]
			} else {
				obj[`Cu-${key}`] = necessary[key]
			}
		})
	}
	// 多语言模型判断
	if (core.language.type) {
		obj['Ca-Language'] = core.language.type
	}
	const userInfo = core.user.info
	// 用户token
	if (core.request.token) {
		obj['Ca-Token'] = core.request.token
	}
	obj['Ca-User'] = userInfo._id // 当前使用的用户id
	obj['Ca-Membership'] = userInfo.membership && userInfo.membership.serial || 0 // 当前用户的会员id。一般仅需要的子项目中会有
	// 没有Token的情况下，一定要加入下面七项
	obj['Ca-Apply'] = core.store.device.info.apply_code // 当前应用类别
	obj['Ca-Test'] = isTest // 是否测试环境。测试环境所有的数据库都将是测试数据库
	obj['Ca-Development'] = core.isDevelopment // 是否开发环境。开发环境下有的接口处理会不一样
	obj['Ca-Target'] = core.info.target.code // 当前项目代码
	obj['Ca-Prefix'] = core.info.target.prefix // 当前项目前缀
	obj['Ca-Partya'] = core.info.target.partya // 当前甲方代码
	obj['Ca-Device'] = core.store.device.info.deviceId // 当前设备ID
	return obj
}